$(function () {
    var alerts = $('.alert');
    // 关闭提示框动画效果
    alerts.children('button').click(function () {
        var alerts =  $(this).parent();
        alerts.addClass('lightSpeedOut');
        var trigger = setTimeout(function(){
            alerts.remove();
            clearTimeout(trigger);
        }, 1000);
        return false;
    });
    // 定时删除提示框
    if (alerts.length > 0) {
        alerts.each(function () {
            var time = $(this).find('.time').text();
            var interval = setInterval(function () {
                time--;
                alerts.find('.time').html(time);
                if (time == 1) {
                    alerts.addClass('lightSpeedOut');
                }
                if (time < 1) {
                    clearInterval(interval);
                    alerts.remove();
                }
                //console.log(time);
            }, 1000);
        });
    }
    getUrlParam();
});

// 获取URL的参数
function getUrlParam() {
    var str = location.search.substring(1);
    var param = str.split("&");
    var args = new Object();
    for (var i in param) {
        var pos = param[i].indexOf('=');
        if (pos > 0) {
            var key = param[i].substring(0, pos);
            var value = param[i].substring(pos + 1);
            args[key] = decodeURIComponent(value);
        }
    }
    return args;
}

// 对象拼接为字符串
function setUrl(param) {
    var url = window.location.pathname;
    if (param !== undefined) {
        var str = '';
        for (var key in param) {
            str += '&' + key + '=' + param[key];
        }
        if (str != '') url += '?' + str.substring(1);
    }
    return url;
}

// 获取本地防CSRF攻击的token值
function CSRFToken() {
    var token = null;
    if ($.cookie('XSRF-TOKEN')) {
        token = $.cookie('XSRF-TOKEN');
    }
    return token;
}

// 具有CSRF攻击的ajax提交方法
function ajaxToken(param) {
    var ajaxParam = {};
    if (!param.url) {
        console.log('ajax not url!');
        return false;
    }
    ajaxParam.url = param.url;
    ajaxParam.type = (param.type == undefined) ? 'GET' : param.type;
    ajaxParam.dataType = (param.dataType == undefined) ? 'json' : param.dataType;
    ajaxParam.data = (param.data == undefined) ? {} : param.data;
    if (param.processData != undefined) ajaxParam.processData = false;
    var token = CSRFToken();
    if (token == null && ajaxParam.type != 'GET') {
        console.log('not token!');
        window.location.reload();
        return false;
    } else {
        ajaxParam.headers = {
            'X-XSRF-TOKEN': token,
        };
    }
    if (param.success != undefined) {
        ajaxParam.success = function (result) {
            param.success(result);
        }
    }
    if (param.error != undefined) {
        ajaxParam.error = function (xhr, status, thrown) {
            // xhr 包括XMLHttpRequest对象和其他更多的详细属性和信息
            // 主要有4个属性
            // readyState :当前状态,0-未初始化，1-正在载入，2-已经载入，3-数据进行交互，4-完成
            // status  ：返回的HTTP状态码，比如常见的404,500等错误代码
            // statusText ：对应状态码的错误信息，比如404错误信息是not found,500是Internal Server Error
            // responseText ：服务器响应返回的文本信息
            //
            // status 返回字符串类型，表示返回的状态
            // 根据服务器不同的错误可能返回下面这些信息："timeout"（超时）, "error"（错误）, "abort"(中止), "parsererror"（解析错误），还有可能返回空值
            //
            // thrown 返回字符串类型,表示服务器抛出返回的错误信息
            // 如果产生的是HTTP错误，那么返回的信息就是HTTP状态码对应的错误信息，比如404的Not Found,500错误的Internal Server Error
            param.error(xhr, status, thrown);
        }
    } else {
        ajaxParam.error = function (xhr, status, thrown) {
            console.log(thrown);
        }
    }
    $.ajax(ajaxParam);
    return false;
}